S में SabD_taulanaa () फ़ंक्शन

C स्टैंडर्ड लाइब्रेरी में स्ट्रिंग तुलना के लिए STRCMP () फ़ंक्शन शामिल है। सी प्रोग्रामिंग में, यह अक्सर दो स्ट्रिंग्स की तुलना करने के लिए उपयोग किया जाता है और <SabD.h> हेडर का एक घटक है। दो स्ट्रिंग्स के बीच एक संबंध फ़ंक्शन के रिटर्न वैल्यू द्वारा दिखाया गया है, जो एक पूर्णांक मान है। STRCMP (First_String, Second_String) फ़ंक्शन दो स्ट्रिंग्स की तुलना करता है और 0 रिटर्न 0 यदि दोनों तार समान हैं। पहले स्ट्रिंग के लिए पॉइंटर जो तुलना की जाएगी, STR1। दूसरे स्ट्रिंग की तुलना में पॉइंटर, जो कि तुलना की जाएगी, STR2। यदि STR1 STR2 से लेक्सोग्राफिक रूप से बेहतर है, तो यह 0 से बड़ा एक पूर्णांक संख्या देता है। यदि STR1 STR2 से लेक्सोग्राफिक रूप से छोटा है, तो यह एक पूर्णांक मान देता है जो 0 से कम है। यह 0 लौटता है यदि STR1 और STR2 समान हैं। यहां, हम गेट्स () फ़ंक्शन का उपयोग कर रहे हैं, जो कंसोल से स्ट्रिंग पढ़ता है।

उदाहरण

#EZstamaalakre<PsaTidiAayaAae.Pca>
#EZstamaalakre <SabD.Pca>
paunaZ mauqya(){
Axar Ijt1[20],Ijt2[20];
laiqaiyae("pzavaeSa krnaa 1 daeri: ");
SabD_pawe(Ijt1);//paW.taa SabD sae saaMtvanaaRDenaa
laiqaiyae("pzavaeSa krnaa 2 daeri: ");
SabD_pawe(Ijt2);
Agar(SabD_taulanaa(Ijt1,Ijt2)==0)
laiqaiyae("sTiMgsa hIM barabar");
nahitaae
laiqaiyae("sTiMgsa hIM nahiM barabar");
vaapasakre 0;
}

आउटपुट

pzavaeSaRkrnaa 1 SabD: namastae
pzavaeSaRkrnaa 2 SabD: namastae
sTiMgsa hIM barabar

स्पष्टीकरण:

प्रोग्राम उपयुक्त हेडर फ़ाइलों के साथ आता है, जिसमें "STDIO.H" शामिल हैं, जो कि मानक इनपुट/आउटपुट और "स्ट्रिंग.ह" से निपटते हैं, जो स्ट्रिंग्स से निपटने वाले कार्यों के लिए STRCMP () सहित हैं। आकार 20 के दो-वर्ण Arrays STR1 और STR2 को उपयोगकर्ता द्वारा आपूर्ति किए गए इनपुट स्ट्रिंग्स को रखने के लिए घोषित किया गया है। PrintF () विधि का उपयोग करते हुए, प्रोग्राम उपयोगकर्ता को पहले स्ट्रिंग को इनपुट करने के लिए कहता है। इनपुट स्ट्रिंग को गेट्स () विधि का उपयोग करके कंसोल से पढ़ा जाता है। हालांकि, यह उजागर करना महत्वपूर्ण है कि बफर ओवरफ्लो हमलों के लिए इसकी संवेदनशीलता के कारण, प्राप्त होता है () को पदावनत किया जाता है और सलाह नहीं दी जाती है। इसी तरह से, कार्यक्रम उपयोगकर्ता को इसे पढ़ने के लिए () का उपयोग करने से पहले दूसरा स्ट्रिंग दर्ज करने के लिए कहता है। उसके बाद, दो स्ट्रिंग्स STR1 और STR2 को STRCMP () विधि का उपयोग करके तुलना में रखा जाता है। चूंकि दो तार समान हैं यदि STRCMP () 0 लौटता है, तो प्रोग्राम प्रिंटफ () का उपयोग करके "स्ट्रिंग्स समान हैं" लिखते हैं। अन्यथा, प्रोग्राम आउटपुट "स्ट्रिंग्स समान नहीं हैं" यदि STRCMP () एक गैर-शून्य परिणाम देता है। अंत में, मुख्य फ़ंक्शन 0 लौटता है, यह दर्शाता है कि कार्यक्रम सफलतापूर्वक चला गया है। STRCMP () विधि की तुलना में दो तार चरित्र-दर-वर्ण हैं। तुलना प्रक्रिया प्रत्येक स्ट्रिंग के पहले वर्णों के साथ शुरू होती है। यदि वे समान हैं, तो यह बाद के वर्णों को तब तक आगे बढ़ाता है: यह तय करता है कि कौन सा स्ट्रिंग मैचिंग वर्णों के बीच के अंतर के आधार पर लेक्सिकोग्राफिक रूप से बड़ा या छोटा है, या यह एक या दोनों तार के अंत तक पहुंचता है। वर्णों के ASCII मानों का उपयोग तुलना में किया जाता है। अपरकेस और लोअरकेस अक्षरों को तुलना में अलग -अलग तरीके से देखा जाता है क्योंकि यह मामले को ध्यान में रखता है। फ़ंक्शन यह बताता है कि इनपुट के रूप में सौंपे गए तार शून्य-समाप्त होते हैं। एक स्ट्रिंग जो अशक्त चरित्र ('0') के साथ समाप्त होती है, को एक शून्य-समाप्त स्ट्रिंग के रूप में जाना जाता है। इस उदाहरण में, कंसोल से स्ट्रिंग्स को पढ़ने के लिए GetS () फ़ंक्शन का उपयोग किया जाता है। यह ध्यान रखना महत्वपूर्ण है कि गेट्स () विधि को सी प्रोग्रामिंग भाषा में हटा दिया गया है और दृढ़ता से हतोत्साहित किया गया है। इस मुद्दे का मुख्य कारण यह है कि गेट्स () में यह नियंत्रित करने के लिए कोई विधि नहीं है कि इनपुट से कितने वर्ण पढ़े जाते हैं, इसे बफर ओवरफ्लो हमलों के लिए असुरक्षित बना दिया जाता है जो सुरक्षा दोषों में परिणाम कर सकते हैं। यह सलाह दी जाती है कि वे सुरक्षित रूप से पढ़ने के लिए कंसोल के स्थान पर FGETs () का उपयोग करें। बफर ओवरफ्लो से बचने के लिए, FGETS () फ़ंक्शन आपको पढ़ने के लिए अधिकतम वर्णों को सेट करने देता है।

◀ पीछे अगला ▶